# 1. 使用官方的Alpine镜像作为基础镜像
FROM alpine:latest

# 2. 暴露8090端口作为服务端口
EXPOSE 8090

# 3. 将simplehttp二进制程序拷贝到/app目录
COPY simplehttp /app/simplehttp
# 8. 创建启动脚本start.sh，检查环境变量CONFIG_DEV是否存在
COPY start.sh /app/start.sh
# 确保启动脚本可执行
RUN chmod +x /app/start.sh

# 4. 设置环境变量CONFIG_DEV，默认为false，此处是结合 build参数+ARG参数+ENV 来实现的，这样更灵活一些
## 定义构建参数 BUILD_CONFIG_DEV，该参数通过如下形式传递：
## docker build --build-arg BUILD_CONFIG_DEV=true -t myapp .
ARG BUILD_CONFIG_DEV

# 使用构建参数的值设置环境变量 CONFIG_DEV，默认为 "false"
ENV CONFIG_DEV=${BUILD_CONFIG_DEV:-"false"}

# 5. 指定工作目录为/app
WORKDIR /app

# 6. 创建用户和组lcj，安装必要的软件包
RUN apk add --no-cache curl && \
    addgroup -S lcj && adduser -S -G lcj lcj

# 7. 

# 8. 切换到用户lcj执行后续操作
USER lcj
# 9. 暴露服务的端口为8090（已经在第2步中完成）

# 10. 健康检查命令，访问/go/probe路径以确认服务正常运行
HEALTHCHECK --interval=30s --timeout=10s CMD wget -qO- http://127.0.0.1:8090/go/probe | grep "ok" || exit 1

# 11. 给镜像增加一些metadata标签
LABEL maintainer="your-email@example.com" \
      description="A minimal Docker image for running the simplehttp Go application." \
      version="1.0"

# 12. 使用ENTRYPOINT指定启动脚本，并使用CMD传递参数给simplehttp
ENTRYPOINT ["/app/start.sh"]
CMD ["/app/simplehttp", "--prefix=victory"]
